home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FishMarket 1.0
/
FishMarket v1.0.iso
/
fishies
/
076-100
/
disk_096
/
tek4695
/
dospecial.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-05-06
|
2KB
|
84 lines
/* Tektronix 4695 special printer functions */
/******* printer.device/printers/Tektronix_4695_special_functions **********
*
* Name
* Tektronix 4695 special functions implemented:
*
* aRIN, aSLRM, aSFC
*************************************************************************/
#include "exec/types.h"
#include "devices/printer.h"
#include "devices/prtbase.h"
extern struct PrinterData *PD;
long
DoSpecial(command,outputBuffer,vline,currentVMI,crlfFlag,Parms)
register char outputBuffer[];
register UWORD *command;
register BYTE *vline;
register UBYTE *currentVMI; /* used for color on this printer */
BYTE *crlfFlag;
UBYTE Parms[];
{
register int x = 0;
register int y = 0;
static BYTE ISOcolorTable[10] =
{'1','3','5','4','7','2','6','0','1','1'};
static unsigned char initMarg[] = "\033H001090";
if(*command==aRIN) {
*currentVMI = 0x70; /* white background, black text */
outputBuffer[x++] = '\015';
outputBuffer[x++] = '\012';
Parms[0] = (PD->pd_Preferences.PrintLeftMargin);
Parms[1] = (PD->pd_Preferences.PrintRightMargin);
*command = aSLRM;
}
if(*command==aSLRM) {
*Parms += 4;
if (Parms[0]<5)
Parms[0] = 5;
Parms[1] += 5;
if (Parms[1]>90)
Parms[1] = 90;
initMarg[4] = (char)((Parms[0]/10)+'0');
initMarg[5] = (char)((Parms[0]-(UBYTE)(Parms[0]/10)*10)+'0');
initMarg[6] = (char)((Parms[1]/10)+'0');
initMarg[7] = (char)((Parms[1]-(UBYTE)(Parms[1]/10)*10)+'0');
while (y<10)
outputBuffer[x++] = initMarg[y++];
return(x);
}
if(*command==aSFC) {
if (Parms[0]==39)
Parms[0] = 30; /* set defaults */
if (Parms[0]==49)
Parms[0] = 47;
if (Parms[0]<40)
*currentVMI = ((*currentVMI)&240)+(Parms[0]-30);
else
*currentVMI = ((*currentVMI)&15)+((Parms[0]-40)*16);
outputBuffer[x++] = '\033';
outputBuffer[x++] = 'C';
outputBuffer[x++] = ISOcolorTable[(*currentVMI)&15];
outputBuffer[x++] = ISOcolorTable[(((*currentVMI)&240)/16)];
return(x);
}
if(*command==aRIS)
PD->pd_PWaitEnabled = 253;
return(0);
}